package com.rgs.platform.service;

import com.github.pagehelper.PageInfo;
import com.rgs.base.core.page.IPageRequestModel;
import com.rgs.platform.entity.BillInfoDO;
import com.rgs.platform.filter.BillInfoFilterDTO;

import java.util.List;
import java.util.Optional;

/**
 * @author Ren Gaoshuai
 * @ClassName BillInfoService
 * @create 2022-01-24 11:17
 **/
public interface BillInfoService {

    /**
     * 根据条件获取一条数据
     *
     * @param billInfoFilter 条件过滤器
     * @return 实例对象
     */
    Optional<BillInfoDO> selectByFilter(BillInfoFilterDTO billInfoFilter);

    /**
     * 通过条件查询数据
     *
     * @param billInfoFilter 条件过滤器
     * @return 实例数组
     */
    List<BillInfoDO> listByFilter(BillInfoFilterDTO billInfoFilter);

    /**
     * 分页获取数据
     * @param iPageRequestModel     分页请求对象
     * @param billInfoFilter        条件过滤器
     * @return 结果
     */
    PageInfo<BillInfoDO> listPageByFilter(IPageRequestModel iPageRequestModel, BillInfoFilterDTO billInfoFilter);

    /**
     * 根据主键获取对象
     *
     * @param id 主键
     * @return 实例
     */
    BillInfoDO selectById(String id);

    /**
     * 新增实例
     *
     * @param billInfoDO 实例
     * @return 实例
     */
    BillInfoDO insert(BillInfoDO billInfoDO);

    /**
     * 通过条件删除数据
     *
     * @param billInfoFilter 条件过滤器
     */
    void deleteByFilter(BillInfoFilterDTO billInfoFilter);

    /**
     * 根据主键删除
     *
     * @param id 主键
     */
    void deleteById(String id);

    void updateSelectiveByPrimaryKey(BillInfoDO billInfoDO);
}
